#include <iostream>
#include <math.h>

#define MAX 1000000

using namespace std;

int table[MAX];
int primecount;
int offset;

void generatePrimeTable(int total) {
   bool isPrime;
   int sq, counter;
   offset = counter = 0;
   
   table[offset++] = 2;
   counter++;
   
   for(int i=3;;i+=2) {
      isPrime = true;
      sq = (int)sqrt(i) + 1;
      for(int j=0;j<offset && table[j]<=sq;j++) {
         if(!(i%table[j])) {
            isPrime = false;
			break;
         }	  
      }
      if(isPrime){
         table[offset++] = i;
         counter++;
      }
      if(total==counter) 
         break; 
   }
}

int binarySearch(int s, int e, int n)
{

	if(s > e) return -1;

	int middle = (s+e)/2;

	//cout<<middle<<endl;

	if(table[middle] > n)
		return binarySearch(s, middle-1, n);
	else if(table[middle] < n)
		return binarySearch(middle+1, e, n);

	return middle;
		
}

int main()
{
	generatePrimeTable(100000);

	int n;
	int fprime = 0;
	int sprime = 0;
	while(cin>>n && n)
	{

	//	cout<<n<<endl;
		for(int i = 0; i < 100000; i++)
		{
			fprime = table[i];
			sprime = n - fprime;
			if(binarySearch(0, 100000-1, sprime) >= 0)
			{
				cout<<n<<" = "<<fprime<<" + "<<sprime<<endl;
				break;
			}
		}
	}

	return 0;
}
